/*
ajax请求函数模块
返回值: promise对象(异步返回的数据是: response.data)
 */
import Vue from 'vue'
import axios from 'axios'
import qs from 'qs'
let loading = "";
function showLoading() {
    loading = Vue.prototype.$loading({
        lock: true,
        text: 'Loading',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.3)'
    });
}
function hideLoading() {
    loading.close();
}
export default function ajax(url, data = {}, type = 'GET') {
    return new Promise(function (resolve, reject) {
        // 执行异步ajax请求
        let promise
        if (type === 'GET') {
            // 准备url query参数数据
            let dataStr = '' //数据拼接字符串
            Object.keys(data).forEach(key => {
                dataStr += key + '=' + data[key] + '&'
            })
            if (dataStr !== '') {
                dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
                url = url + '?' + dataStr
            }
            // 发送get请求
            promise = axios.get(url)
        } else {
            // 发送post请求
            promise = axios.post(url, qs.stringify(data))
        }
        promise.then(function (response) {
            // 成功了调用resolve()
            resolve(response.data)
        }).catch(function (error) {
            //失败了调用reject()
            reject(error)
        })
    })
}
export function ajaxpost(url, params) {
    showLoading();
    return new Promise(function (resolve, reject) {
        axios.post(url, params,
            {
                headers: {
                    "Content-Type": "application/json"
                }
            }
        ).then(response => {
            hideLoading();
            resolve(response.data);
        }).catch(err => {
            hideLoading();
            reject(err)
        })
    });
}
export function ajaxget(url, params) {
    showLoading();
    return new Promise(function (resolve, reject) {
        axios.get(url, {params: params}).then(
            response => {
                hideLoading();
                resolve(response.data);
            }).catch(err => {
            hideLoading();
            reject(err)
        })
    });
}
export function ajaxBlob(method, url, params) {
    showLoading();
    return new Promise(function (resolve, reject) {
        axios({
            method: method,
            url: url,
            data: params,
            responseType: 'blob'
        }).then(response => {
            hideLoading();
            resolve(response.data);
        }).catch(err => {
            hideLoading();
            reject(err)
        })
    });
}






